﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cotizav.PRESENTACION.Maestro;
using Cotizav.PRESENTACION.Personas.Cliente;
using Cotizav.PRESENTACION.Base;
using Cotizav.PRESENTACION.Personas.Vendedor;
using Cotizav.PRESENTACION.Equipo;
using Cotizav.PRESENTACION.Cotizacion;
using Cotizav.PRESENTACION.Familia;
using Cotizav.PRESENTACION.Otros;
using Cotizav.PRESENTACION.Visita;
using Cotizav.PRESENTACION.CartaCompromiso;
using Cotizav.PRESENTACION.Reporte;

namespace Cotizav.PRESENTACION
{
    public partial class Principal : Form
    {
        private int childFormNumber = 0;

        public Principal()
        {
            InitializeComponent();
        }

        private void ShowNewForm(object sender, EventArgs e)
        {
            Form childForm = new Form();
            childForm.MdiParent = this;
            childForm.Text = "Ventana " + childFormNumber++;
            childForm.Show();
        }

        private void OpenFile(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            openFileDialog.Filter = "Archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*";
            if (openFileDialog.ShowDialog(this) == DialogResult.OK)
            {
                string FileName = openFileDialog.FileName;
            }
        }

        private void SaveAsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            saveFileDialog.Filter = "Archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*";
            if (saveFileDialog.ShowDialog(this) == DialogResult.OK)
            {
                string FileName = saveFileDialog.FileName;
            }
        }


        private void categoriaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IUCategoria iucateg = new IUCategoria();
            iucateg.ShowDialog(this);
        }

        private void sectorToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IUSector iusector = new IUSector();
            iusector.ShowDialog(this);
        }

        private void sucursalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IUSucursal iusucur = new IUSucursal();
            iusucur.ShowDialog(this);
        }

        private void provinciaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IUProvincia iuprov = new IUProvincia();
            iuprov.ShowDialog(this);
        }

        private void distritoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IUDistrito iudist = new IUDistrito();
            iudist.ShowDialog(this);
        }

        private void formatoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IUFormato iuformat = new IUFormato();
            iuformat.ShowDialog(this);
        }

        private void periodoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IUPeriodo iuperiodo = new IUPeriodo();
            iuperiodo.ShowDialog(this);
        }

        private void condiciónToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IUCondicion iucondicion = new IUCondicion();
            iucondicion.ShowDialog(this);
        }

        private void motivoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IUMotivo iumotivo = new IUMotivo();
            iumotivo.ShowDialog(this);
        }

        private void cargoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IUCargo iucargo = new IUCargo();
            iucargo.ShowDialog(this);
        }

        private void familiaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            PanelFamilia iuPanelFamilia;
            bool IsOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Familia")
                {
                    IsOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (IsOpen == false)
            {
                iuPanelFamilia = new PanelFamilia();
                iuPanelFamilia.MdiParent = this;
                iuPanelFamilia.Show();
            }
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void acercadeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AboutCotizav iuAcercaDe = new AboutCotizav();
            iuAcercaDe.ShowDialog();
        }

        private void cascadaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.Cascade);
        }

        private void mosaicoVerticalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileVertical);
        }

        private void mosaicoHorizontalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LayoutMdi(MdiLayout.TileHorizontal);
        }

        private void cerrarTodoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form childForm in MdiChildren)
            {
                childForm.Close();
            }
        }

        private void Principal_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }


        internal void enable_OkCancel()
        {
            //habilitamos los botones de Acepta y Cancelar
            tsAceptar.Enabled = true; tsAceptar.Visible = true; 
            tsCancelar.Enabled = true; tsCancelar.Visible = true;
            SeparatorOkCancel.Visible = true;
        }

        internal void disable_OkCancel()
        {
            //habilitamos los botones de Acepta y Cancelar
            tsAceptar.Enabled = false; tsAceptar.Visible = false;
            tsCancelar.Enabled = false; tsCancelar.Visible = false;
            SeparatorOkCancel.Visible = false;
        }

        internal void setOperacion(string operacion)
        {
            tsAceptar.Tag = operacion;
            tsCancelar.Tag = operacion;
        }


        internal void loadOperaciones()
        {
            //habilitamos las operaciones
            tsNuevo.Enabled = true; tsNuevo.Visible = true;
            tsModificar.Enabled = true; tsModificar.Visible = true;
            tsEliminar.Enabled = true; tsEliminar.Visible = true;
            toolStripSeparator2.Visible = true;
        }

        internal void disableOperaciones()
        {
            //deshabilitamos las operaciones
            tsNuevo.Enabled = false; tsNuevo.Visible = false;
            tsModificar.Enabled = false; tsModificar.Visible = false;
            tsEliminar.Enabled = false; tsEliminar.Visible = false;
            toolStripSeparator2.Visible = false;
        }

        
        #region Aceptar/Cancelar

        private void tsAceptar_Click(object sender, EventArgs e)
        {
            //obtenemos el form que se encuentra activo
            Form formActivo = this.ActiveMdiChild;

            if (formActivo != null)
            {
                string nameformActivo = formActivo.Text;

                if (formActivo.Tag != null)
                {                    
                    //obtengo el iuregistro
                    IURegistro iuregistro;
                    SplitContainer splitMaestro;

                    switch (nameformActivo)
                    {
                        case "Cliente":
                            iuregistro = formActivo.Controls["panelRegistro"] as IURegistro;
                            splitMaestro = iuregistro.Controls["SplitContainer1"] as SplitContainer;
                            IURegistroCliente iuregCliente = splitMaestro.Panel2.Controls["IURegistroCliente"] as IURegistroCliente;
                            //Verificamos que opcion indico el usuario (nuevo / modificar)

                            switch (formActivo.Tag.ToString())
                            {
                                case "Nuevo":
                                    iuregCliente.registrarCliente();
                                    break;
                                case "Modificar":
                                    iuregCliente.modificarCliente();
                                    break;
                            }

                            //limpiamos la accion en formActivo
                            formActivo.Tag = string.Empty;
                            //actualizamos el grid de clientes
                            (formActivo as RegistroCliente).loadGridClientes();
                            //establecemos el titulo del formulario
                            formActivo.Text = "Cliente";

                            //deshabilitamos las opciones Aceptar_Cancelar 
                            //cargamos las operaciones
                            disable_OkCancel();
                            loadOperaciones();

                            iuregistro.EnabledGridListObjetos();
                            iuregCliente.setReadOnlyPanel();
                            break;

                        case "Vendedor":
                            iuregistro = formActivo.Controls["panelRegistro"] as IURegistro;
                            splitMaestro = iuregistro.Controls["SplitContainer1"] as SplitContainer;
                            IURegistroVendedor iuregVendedor = splitMaestro.Panel2.Controls["IURegistroVendedor"] as IURegistroVendedor;
                            //Verificamos que opcion indico el usuario (nuevo / modificar / eliminar)

                            switch (formActivo.Tag.ToString())
                            {
                                case "Nuevo":
                                    iuregVendedor.registrarVendedor();
                                    break;
                                case "Modificar":
                                    iuregVendedor.modificarVendedor();
                                    break;
                            }
                            //deshabilitamos las opciones Aceptar_Cancelar 
                            disable_OkCancel();
                            //limpiamos el formActivo
                            formActivo.Tag = string.Empty;
                            //actualizamos el grid de clientes
                            (formActivo as RegistroVendedor).loadGridVendedores();
                            formActivo.Text = "Vendedor";
                            loadOperaciones();
                            iuregistro.EnabledGridListObjetos();
                            //limpiamos el panel
                            iuregVendedor.setReadOnlyPanel();
                            break;

                        case "Equipo":
                            iuregistro = formActivo.Controls["panelRegistro"] as IURegistro;
                            splitMaestro = iuregistro.Controls["SplitContainer1"] as SplitContainer;
                            IURegistroEquipo iuregEquipo = splitMaestro.Panel2.Controls["IURegistroEquipo"] as IURegistroEquipo;

                            switch (formActivo.Tag.ToString())
                            {
                                case "Nuevo":
                                    iuregEquipo.registrarEquipo();
                                    break;
                                case "Modificar":
                                    iuregEquipo.modificarEquipo();
                                    break;
                            }
                            //deshabilitamos las opciones Aceptar_Cancelar 
                            disable_OkCancel();
                            //limpiamos el formActivo
                            formActivo.Tag = string.Empty;
                            //actualizamos el grid de clientes
                            (formActivo as RegistroEquipo).loadGridEquipos();
                            formActivo.Text = "Equipo";
                            loadOperaciones();
                            iuregistro.EnabledGridListObjetos();
                            //limpiamos el panel
                            iuregEquipo.setReadOnlyPanel();
                            break;
                    } 
                }
                else
                {
                    if (nameformActivo == "Registro de cotización")
                    {
                        RegistroCotizacion iuregCotizacion = formActivo as RegistroCotizacion;
                        iuregCotizacion.registrarCotizacion();

                        disable_OkCancel();
                        formActivo.Tag = string.Empty;

                        iuregCotizacion.Close();

                        Form fm = this.MdiChildren.SingleOrDefault(x => x.Text == "Cotización");
                        if (fm != null)
                        {
                            PanelCotizacion pcotiz = fm as PanelCotizacion;
                            pcotiz.loadGridCotizacion();
                            pcotiz.Focus();
                        }
                    }

                    if (nameformActivo == "Registro de Carta de compromiso")
                    {
                        RegistroCartaCompromiso iuregCartaCompromiso = formActivo as RegistroCartaCompromiso;
                        iuregCartaCompromiso.registrarCartaCompromiso();

                        disable_OkCancel();
                        formActivo.Tag = string.Empty;

                        iuregCartaCompromiso.Close();

                        Form fm = this.MdiChildren.SingleOrDefault(x => x.Text == "Carta de compromiso");
                        if (fm != null)
                        {
                            PanelCartaCompromiso pcarta = fm as PanelCartaCompromiso;
                            pcarta.loadGridCartaCompromiso();
                            pcarta.Focus();
                        }
                    }
                }
            }
        }

        private void tsCancelar_Click(object sender, EventArgs e)
        {
            //obtenemos el form que se encuentra activo
            Form formActivo = this.ActiveMdiChild;
            
            if (formActivo != null)
            {
                string nameformActivo = formActivo.Text;

                if (formActivo.Tag != null)
                {
                    //obtengo el iuregistro
                    IURegistro iuregistro;
                    SplitContainer splitMaestro;

                    switch (nameformActivo)
                    {
                        case "Cliente":
                            iuregistro = formActivo.Controls["panelRegistro"] as IURegistro;
                            splitMaestro = iuregistro.Controls["SplitContainer1"] as SplitContainer;
                            IURegistroCliente iuregCliente = splitMaestro.Panel2.Controls["IURegistroCliente"] as IURegistroCliente;
                            //Verificamos que opcion indico el usuario (nuevo / modificar)

                            switch (formActivo.Tag.ToString())
                            {
                                case "Nuevo":
                                    if (iuregCliente.cancelarRegistro())
                                    {
                                        iuregistro.EnabledGridListObjetos();
                                    }
                                    break;
                                case "Modificar":
                                    if (iuregCliente.cancelarActualizacion())
                                    {
                                        iuregistro.EnabledGridListObjetos();
                                    }
                                    break;
                            }
                            break;

                        case "Vendedor":
                            iuregistro = formActivo.Controls["panelRegistro"] as IURegistro;
                            splitMaestro = iuregistro.Controls["SplitContainer1"] as SplitContainer;
                            IURegistroVendedor iuregVendedor = splitMaestro.Panel2.Controls["IURegistroVendedor"] as IURegistroVendedor;
                            //Verificamos que opcion indico el usuario (nuevo / modificar)

                            switch (formActivo.Tag.ToString())
                            {
                                case "Nuevo":
                                    if (iuregVendedor.cancelarRegistro())
                                    {
                                        iuregistro.EnabledGridListObjetos();
                                    }
                                    break;
                                case "Modificar":
                                    if (iuregVendedor.cancelarActualizacion())
                                    {
                                        iuregistro.EnabledGridListObjetos();
                                    }
                                    break;
                            }
                            break;

                        case "Equipo":
                            iuregistro = formActivo.Controls["panelRegistro"] as IURegistro;
                            splitMaestro = iuregistro.Controls["SplitContainer1"] as SplitContainer;
                            IURegistroEquipo iuregEquipo = splitMaestro.Panel2.Controls["IURegistroEquipo"] as IURegistroEquipo;

                            switch (formActivo.Tag.ToString())
                            {
                                case "Nuevo":
                                    if (iuregEquipo.cancelarRegistro())
                                    {
                                        iuregistro.EnabledGridListObjetos();
                                    }
                                    break;
                                case "Modificar":
                                    if (iuregEquipo.cancelarActualizacion())
                                    {
                                        iuregistro.EnabledGridListObjetos();
                                    }
                                    break;
                            }
                            break;
                    }

                    formActivo.Tag = string.Empty;
                    disable_OkCancel();
                    loadOperaciones();
                }
                else
                {
                    if (nameformActivo == "Registro de cotización")
                    {
                        RegistroCotizacion iuregCotizacion = formActivo as RegistroCotizacion;

                        if (iuregCotizacion.cancelarRegistro())
                        {
                            iuregCotizacion.Close();
                        }
                    }
                }
            }
        }

        #endregion

        #region Operaciones

        private void tsNuevo_Click(object sender, EventArgs e)
        {
            //obtenemos el form que se encuentra activo
            Form formActivo = this.ActiveMdiChild;                       

            if (formActivo != null)
            {               
                string nameformActivo = formActivo.Text;

                if (nameformActivo == "Cliente" || nameformActivo == "Vendedor" || nameformActivo == "Equipo")
                {
                    //indico en el formulario la operacion que se va a realizar
                    formActivo.Tag = "Nuevo"; 
                    
                    IURegistro iuregistro = formActivo.Controls["panelRegistro"] as IURegistro;
                    SplitContainer splitMaestro = iuregistro.Controls["SplitContainer1"] as SplitContainer;

                    switch (nameformActivo)
                    {
                        case "Cliente":
                            //obtengo el iuregistro
                            IURegistroCliente iuregCliente = splitMaestro.Panel2.Controls["IURegistroCliente"] as IURegistroCliente;
                            
                            //habilitamos botones de confirmacion
                            //deshabilitamos botones de operaciones
                            enable_OkCancel();
                            disableOperaciones();
                            
                            iuregistro.DisabledGridListObjetos();
                            iuregCliente.clearPanel();
                            iuregCliente.setEditablePanel();
                            iuregCliente.setRegistradoPorEditable();
                            //formActivo.Text = formActivo.Text + " (Registro)";
                            break;

                        case "Vendedor":
                            //obtengo el iuregistro
                            IURegistroVendedor iuregVendedor = splitMaestro.Panel2.Controls["IURegistroVendedor"] as IURegistroVendedor;
                            
                            enable_OkCancel();
                            disableOperaciones();
                            
                            iuregistro.DisabledGridListObjetos();
                            iuregVendedor.clearPanel();
                            iuregVendedor.setEditablePanel();
                            //formActivo.Text = formActivo.Text + " (Registro)";
                            break;

                        case "Equipo":
                            //obtengo el iuregistro
                            IURegistroEquipo iuregEquipo = splitMaestro.Panel2.Controls["IURegistroEquipo"] as IURegistroEquipo;
                            
                            enable_OkCancel();
                            disableOperaciones();
                           
                            iuregistro.DisabledGridListObjetos();
                            iuregEquipo.clearPanel();
                            iuregEquipo.setEditablePanel();
                            
                            //iuregEquipo.disableModificarButtonCaracteristica();
                            //formActivo.Text = formActivo.Text + " (Registro)";
                            break;
                    }
                }
                else if (nameformActivo == "Cotización")
                {
                    //muestro interfaz para registrar la cotización
                    RegistroCotizacion iuregCotizacion;
                    bool IsOpen = false;

                    foreach (Form f in this.MdiChildren)
                    {
                        if (f.Text == "Registro de cotización")
                        {
                            IsOpen = true;
                            f.Focus();
                            break;
                        }
                    }
                    if (IsOpen == false)
                    {
                        iuregCotizacion = new RegistroCotizacion();
                        iuregCotizacion.MdiParent = formActivo.ParentForm;
                        iuregCotizacion.Show();
                    }   
                }
                else if (nameformActivo == "Carta de compromiso")
                {
                    RegistroCartaCompromiso iuregCartaCompromiso;
                    bool IsOpen = false;

                    foreach (Form f in this.MdiChildren)
                    {
                        if (f.Text == "Registro de Carta de compromiso")
                        {
                            IsOpen = true;
                            f.Focus();
                            break;
                        }
                    }
                    if (IsOpen == false)
                    {
                        iuregCartaCompromiso = new RegistroCartaCompromiso();
                        iuregCartaCompromiso.MdiParent = formActivo.ParentForm;
                        iuregCartaCompromiso.Show();
                    }
                }
            }
        }

        private void tsModificar_Click(object sender, EventArgs e)
        {
            //obtenemos el form que se encuentra activo
            Form formActivo = this.ActiveMdiChild;
           
            if (formActivo != null)
            {
                formActivo.Tag = "Modificar";
                string nameformActivo = formActivo.Text;

                if (nameformActivo == "Cliente" || nameformActivo == "Vendedor" || nameformActivo == "Equipo" || nameformActivo == "Cotización")
                {
                    IURegistro iuregistro = formActivo.Controls["panelRegistro"] as IURegistro;
                    SplitContainer splitMaestro = iuregistro.Controls["SplitContainer1"] as SplitContainer;

                    DataGridView gridObjetos = splitMaestro.Panel1.Controls["gridListObjetos"] as DataGridView;

                    if (gridObjetos.SelectedRows.Count > 0)
                    {
                        switch (nameformActivo)
                        {
                            case "Cliente":
                                //obtengo el iuregistro 
                                IURegistroCliente iuregCliente = splitMaestro.Panel2.Controls["IURegistroCliente"] as IURegistroCliente;

                                //habilitamos la opcion Aceptar_Cancelar
                                enable_OkCancel();
                                disableOperaciones();
                                
                                //deshabilitamos el gridlistObjetos
                                iuregistro.DisabledGridListObjetos();
                                
                                //habilitamos el panel para que pueda editar
                                iuregCliente.enableModifyPanel();
                                iuregCliente.setRegistradoPorReadOnly();
                                //formActivo.Text = formActivo.Text + " (Modificación)";
                                break;

                            case "Vendedor":
                                IURegistroVendedor iuregVendedor = splitMaestro.Panel2.Controls["IURegistroVendedor"] as IURegistroVendedor;

                                //habilitamos la opcion Aceptar_Cancelar
                                enable_OkCancel();
                                disableOperaciones();
                                
                                //deshabilitamos el gridlistObjetos
                                iuregistro.DisabledGridListObjetos();
                                
                                //habilitamos el panel para que pueda editar
                                iuregVendedor.enableModifyPanel();
                                //formActivo.Text = formActivo.Text + " (Modificación)";
                                break;

                            case "Equipo":
                                IURegistroEquipo iuregEquipo = splitMaestro.Panel2.Controls["IURegistroEquipo"] as IURegistroEquipo;

                                enable_OkCancel();
                                disableOperaciones();
                                
                                iuregistro.DisabledGridListObjetos();
                                
                                iuregEquipo.enableModifyPanel();
                                //formActivo.Text = formActivo.Text + " (Modificación)";
                                break;

                            case "Cotización":
                                break;
                        } 
                    } 
                }
            }
        }

        private void tsEliminar_Click(object sender, EventArgs e)
        {
            //obtenemos el form que se encuentra activo
            Form formActivo = this.ActiveMdiChild;            

            if (formActivo != null)
            {
                formActivo.Tag = "Eliminar";
                string nameformActivo = formActivo.Text;

                if (nameformActivo == "Cliente" || nameformActivo == "Vendedor")
                {
                    IURegistro iuregistro = formActivo.Controls["panelRegistro"] as IURegistro;
                    SplitContainer splitMaestro = iuregistro.Controls["SplitContainer1"] as SplitContainer;

                    DataGridView gridObjetos = splitMaestro.Panel1.Controls["gridListObjetos"] as DataGridView;

                    if (gridObjetos.SelectedRows.Count > 0)
                    {
                        switch (nameformActivo)
                        {
                            case "Cliente":
                                //obtengo el iuregistro 
                                IURegistroCliente iuregCliente = splitMaestro.Panel2.Controls["IURegistroCliente"] as IURegistroCliente;
                                iuregCliente.eliminarCliente();
                                (formActivo as RegistroCliente).loadGridClientes();
                                break;

                            case "Vendedor":
                                //obtengo
                                IURegistroVendedor iuregVendedor = splitMaestro.Panel2.Controls["IURegistroVendedor"] as IURegistroVendedor;
                                iuregVendedor.eliminarVendedor();
                                (formActivo as RegistroVendedor).loadGridVendedores();
                                break;
                        }  
                    }
                }
            }
        }

        #endregion

        #region Interfaces

        private void tsClientes_Click(object sender, EventArgs e)
        {
            RegistroCliente iuregcliente;
            bool IsOpen = false; 

            foreach (Form f in this.MdiChildren) 
            { 
                if (f.Text == "Cliente") 
                { 
                    IsOpen = true; 
                    f.Focus(); 
                    break; 
                } 
            }
            if (IsOpen == false) 
            { 
                iuregcliente = new RegistroCliente();
                iuregcliente.Tag = string.Empty;
                iuregcliente.MdiParent = this;
                iuregcliente.Show(); 
            }
        } 
       
        private void tsVendedores_Click(object sender, EventArgs e)
        {
            RegistroVendedor iuregvendedor;
            bool IsOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Vendedor")
                {
                    IsOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (IsOpen == false)
            {
                iuregvendedor = new RegistroVendedor();
                iuregvendedor.Tag = string.Empty;
                iuregvendedor.MdiParent = this;
                iuregvendedor.Show();
            }
        }

        private void tsEquipos_Click(object sender, EventArgs e)
        {
            RegistroEquipo iuregequipo;
            bool IsOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Equipo")
                {
                    IsOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (IsOpen == false)
            {
                iuregequipo = new RegistroEquipo();
                iuregequipo.Tag = string.Empty;
                iuregequipo.MdiParent = this;
                iuregequipo.Show();
            }
        }

        private void tsCotizacion_Click(object sender, EventArgs e)
        {
            PanelCotizacion iucotizacion;
            bool IsOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Cotización")
                {
                    IsOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (IsOpen == false)
            {
                iucotizacion = new PanelCotizacion();
                iucotizacion.MdiParent = this;
                iucotizacion.Show(); 
            }                
        }

        private void tsVisitas_Click(object sender, EventArgs e)
        {
            PanelVisita iuvisita;
            bool IsOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Visitas")
                {
                    IsOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (IsOpen == false)
            {
                iuvisita = new PanelVisita();              
                iuvisita.MdiParent = this;
                iuvisita.Show();
            }
        }

        private void tsCompromiso_Click(object sender, EventArgs e)
        {
            PanelCartaCompromiso iucartacompromiso;
            bool IsOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Carta de compromiso")
                {
                    IsOpen = true;
                    f.Focus();
                    break;
                }
            }
            if (IsOpen == false)
            {
                iucartacompromiso = new PanelCartaCompromiso();
                iucartacompromiso.MdiParent = this;
                iucartacompromiso.Show();
            }
        }

        private void tsReportes_Click(object sender, EventArgs e)
        {
            IUReporte iuReporte;
            bool IsOpen = false;

            foreach (Form f in this.MdiChildren)
            {
                if (f.Text == "Reportes")
                {
                    IsOpen = true;
                    f.Focus();
                    break;
                }
            }

            if (IsOpen == false)
            {
                iuReporte = new IUReporte();
                iuReporte.MdiParent = this;
                iuReporte.Show();
            }
        }

        #endregion 

        private void Principal_MdiChildActivate(object sender, EventArgs e)
        {
            Form f = this.ActiveMdiChild;

            //verificamos que el formulario secundario este activo
            if (f != null)
            {
                //verificamos si existe una operacion
                if (f.Tag != null)
                {
                    switch (f.Tag.ToString())
                    {
                        // clientes, vendedores, equipos
                        case "Nuevo":
                        case "Modificar":
                            this.enable_OkCancel();
                            this.disableOperaciones();
                            break;
                        case "Eliminar":
                            this.disable_OkCancel();
                            this.disableOperaciones();
                            break;
                        default: //otra interfaz despues de ser modificado
                            this.disable_OkCancel();
                            this.loadOperaciones();
                            break;
                    }
                }
                else  //otra interfaz no modificada 
                {
                    if (f.Text == "Cotización" || f.Text == "Carta de compromiso")
                    {
                        this.disable_OkCancel();

                        tsNuevo.Enabled = true; tsNuevo.Visible = true;
                        toolStripSeparator2.Visible = true;
                        tsModificar.Enabled = false;
                        tsEliminar.Enabled = false;
                    }
                    else if (f.Text == "Registro de cotización" || f.Text == "Registro de Carta de compromiso")
                    {
                        this.enable_OkCancel();
                        this.disableOperaciones();
                    }
                    else
                    {
                        this.disable_OkCancel();
                        this.disableOperaciones();
                    }
                }
            }
            else
            {
                this.disable_OkCancel();
                this.disableOperaciones();
            }
        }
    }
}
